// 自定义队列
function Queue() {
  // 用于保存元素的数组
  this.items = [];
  // 队列操作的方法
  // enter queue方法
  this.enqueue = function (element) {
    this.items.push(element);
  };
  // delete queue方法
  this.dequeue = function () {
    return this.items.shift();
  };
  // 查看前端的元素
  this.front = function () {
    return this.items[0];
  };
  // 查看队列是否为空
  this.isEmpty = function () {
    return this.items.length === 0;
  };
  // 查看队列中元素的个数
  this.size = function () {
    return this.items.length;
  };
}

// class写法
class QueueClass {
  constructor() {
    this.items = [];
  }
  enqueue(val) {
    this.items.push(val);
  }
  dequeue() {
    return this.items.shift();
  }
  front() {
    return this.items[0];
  }
  isEmpty() {
    return this.items.length === 0;
  }
  size() {
    return this.items.length;
  }
}
// new出一个队列实例
// let demo = new Queue();
// ES6 class写法
let demo = new QueueClass();
demo.enqueue(1);
demo.enqueue(2);
demo.enqueue(3);
demo.enqueue(4);
// 当前队列的元素个数
console.log("当前队列的元素个数 -", demo.size());
console.log("-------------------");
demo.dequeue();
// 出队列一次后的元素个数
console.log("当前队列的元素个数 -", demo.size());
// 当前队列队首的元素是
console.log("当前队列队首的元素是 -", demo.front());
// 当前队列是否为空
console.log("当前队列是否为空 -", demo.isEmpty());
